//
//  Emoticonswift
//  EmoticonKeyboard
//
//  Created by liii on 16/8/20.
//  Copyright © 2016年 liii. All rights reserved.
//

import UIKit

class EmoticonTextView: UITextView {


    // 插入属性文本
    func insertImageAttributedStringWithEmoticon(em: Emoticon) {
    
        // 2. 如果点击的是"空表情"
        if em.isEmpty {
            print("点击了空表情")
            return
        }
        
        // 3. 如果点击的是"删除按钮"
        if em.isDelete {
            // 执行回删
            deleteBackward()
        }
        
        // 4. 如果点击的Emoji表情
        if em.code != nil {
            // 把表情字符串插入到文本中
            replaceRange(selectedTextRange!, withText: em.codeString!)
            return
        }
        
        // 5. 如果点击的是图片表情, 则进一步处理, 并放到文本中
        // 5.1 把表情图片添加到, 文本附件
        let emoticonImageText = EmoticonTextAttachment.imageAttributedStringWithEmotion(em, font: font!)
        
        // 5.3 拿到当前输入框的"属性文本"
        let currentImageText = NSMutableAttributedString(attributedString: attributedText)
        // 5.7 记录当前光标位置
        let range = selectedRange
        // 5.4 把"图片属性文本", 插入到当前输入框的"属性文本中"
        currentImageText.replaceCharactersInRange(range, withAttributedString: emoticonImageText)
        // 5.5 重新给输入框赋值
        attributedText = currentImageText
        // 5.8 恢复光标位置
        selectedRange = NSRange(location: range.location + 1, length: 0)
    }

    func fullText() -> String {
    
        // 用于拼接文本
        var strM = String()
        
        // 遍历属性文本
        attributedText.enumerateAttributesInRange(NSRange(location: 0, length: attributedText.length), options: []) { (dict, range, _) -> Void in
            
            if let attachment = dict["NSAttachment"] as? EmoticonTextAttachment {
                // 图片文本
                strM += (attachment.chs ?? "")
            } else {
                // 普通文本
                let text = (self.text as NSString).substringWithRange(range)
                strM += text
            }
        }
        
        return strM
    }
}
